/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package lista10.exercicio2;

import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author carlos
 */
public class funcoes {

    gerente ger = new gerente();
    funcionario funci = new funcionario();

    ArrayList<String[]> listaG = (ArrayList<String[]>) ger.gerentes();
    ArrayList<String[]> listaF = (ArrayList<String[]>) funci.funcionarios();    

    public String[][] comissaoGerente() {
        int numG = ger.listaG.size();
        int cont = 0;

        String comi[][] = new String[numG][2];

        for (String[] list : listaG) {
            comi[cont][0] = list[0];
            comi[cont][1] = (Double.parseDouble(list[1]) * Double.parseDouble(list[2])) + "";
            cont++;
        }
        return comi;
    }

    public void RetornaComissaoGErente() {
        funcoes func = new funcoes();

        for (int i = 0; i < func.comissaoGerente().length; i++) {
            String[][] com = func.comissaoGerente();
            System.out.print(com[i][0] + " sal + comissao: R$" + com[i][1] + "\n\n");
        }
    }

    public String[][] ImpostoPorFuncionarios() {
        int numF = funci.listaF.size();
        int cont = 0;

        String[][] impo = new String[numF][2];

        for (String[] list1 : listaF) {
            impo[cont][0] = list1[0];
            impo[cont][1] = (Double.parseDouble(list1[1]) + Double.parseDouble(list1[1]) * 0.9) + "";
            cont++;
        }

        return impo;
    }

    public void RetornaImportoFuncionario() {

        funcoes func = new funcoes();

        for (int i = 0; i < func.ImpostoPorFuncionarios().length; i++) {
            String[][] com = func.ImpostoPorFuncionarios();
            System.out.print(com[i][0] + " sal + impostos: R$" + com[i][1] + "\n\n");
        }
    }

    public void SomaTodosSalarios() {
        double sal = 0;

        for (String[] list1 : listaF) {
            sal = sal + (Double.parseDouble(list1[1]));
        }
        for (String[] list1 : listaG) {
            sal = sal + (Double.parseDouble(list1[1]));
        }

        System.out.println("O total de salarios é : " + sal);
    }

    public String[][] SalarioBruto() {
        int tam = funci.listaF.size() + ger.listaG.size();
        int cont = 0;
        String retorno[][] = new String[tam][2];

        for (String[] list1 : listaF) {
            retorno[cont][0] = list1[0];
            retorno[cont][1] = (Double.parseDouble(list1[1])) * 1.1 + "";
            cont++;
        }
        int cont2 = cont;
        for (String[] list1 : listaG) {
            retorno[cont2][0] = list1[0];
            retorno[cont2][1] = Double.parseDouble(list1[1])
                    + (Double.parseDouble(list1[1]) * (Double.parseDouble(list1[1]) / 100)) + "";
            cont2++;
        }

        return retorno;
    }

    public void RetornaSalarioBrutos() {
        funcoes func = new funcoes();

        for (int i = 0; i < func.SalarioBruto().length; i++) {
            String retorno[][] = func.SalarioBruto();
            System.err.println("O Salario do " + retorno[i][0] + " é de : R$" + retorno[i][1]);
        }
    }

    public String[][] SalarioLiquido() {
        int cont = 0;
        funcoes func = new funcoes();
        int tam = func.SalarioBruto().length;
        String retorno[][] = new String[tam][2];
        String salarios[][] = func.SalarioBruto();
        double sal_liq, sal_bruto = 0;

        for (int i = 0; i < func.SalarioBruto().length; i++) {
            if (Double.parseDouble(salarios[i][1]) > 2000) {
                sal_bruto = Double.parseDouble(salarios[i][1]);
                sal_liq = sal_bruto - (sal_bruto * 0.10) - (sal_bruto * 0.15);

                retorno[i][0] = salarios[i][0];
                retorno[i][1] = sal_liq + "";
            } else {
                sal_liq = sal_bruto - (sal_bruto * 0.10);

                retorno[i][0] = salarios[i][0];
                retorno[i][1] = sal_liq + "";
            }
        }
        return retorno;
    }

    public void RetornaSalariosLiquidos() {
        funcoes func = new funcoes();

        for (int i = 0; i < func.SalarioLiquido().length; i++) {
            String retorno[][] = func.SalarioLiquido();
            System.err.println("O Salario do " + retorno[i][0] + " é de : R$" + retorno[i][1]);
        }
    }

    public void RetornaMaiorSalGerFum() {
        double maior = 0;
        String nome = "";

        for (String[] list1 : listaG) {
            if (Double.parseDouble(list1[1]) > maior) {
                maior = Double.parseDouble(list1[1]);
                nome = list1[0];
            }
        }
        double maiorF = 0;
        String nomeF = "";

        for (String[] list1 : listaF) {
            if (Double.parseDouble(list1[1]) > maiorF) {
                maiorF = Double.parseDouble(list1[1]);
                nomeF = list1[0];
            }
        }
        System.out.println("O Gerente " + nome + " tem o maior salario : " + maior);
        System.out.println("O Funcionario " + nomeF + " tem o maior salario : " + maiorF);
    }

    public void RetornaMenorSalGerFun() {
        double menor = 1000000000;
        String nome = "";
        for (String[] list1 : listaG) {
            if(Double.parseDouble(list1[1]) < menor){
                menor = Double.parseDouble(list1[1]);
                nome = list1[0];
            }
        }
        double menorF = 1000000000;
        String nomeF = "";
        for (String[] list1 : listaF) {
            if(Double.parseDouble(list1[1]) < menorF){
                menorF = Double.parseDouble(list1[1]);
                nomeF = list1[0];
            }
        }
        System.out.println("O Gerente " + nome + " tem o menor salario : " + menor);
        System.out.println("O Funcionario " + nomeF + " tem o menor salario : " + menorF);
    }
    
    public  void PesquisaContatos(){
        String listadeFunc = "Selecione um funcionario: \n";
        contato conta = new contato();
        int cont = 1 ;
        for (String[] list1 : listaF) {
            listadeFunc +=  cont + " - " + list1[0] + "\n"; 
            cont++;
        }
        
        int id_f = Integer.parseInt(JOptionPane.showInputDialog(listadeFunc));
        
        ArrayList<String[]> contatos = (ArrayList<String[]>) conta.contatos();
        int cont2 = 0;
        String contatosF = "";
        
        for (String[] contar : contatos) {
            if( (cont2+1) == id_f ){
                contatosF = "Tel 1 : " + contar[0] + "\n";
                contatosF += "Tel 2 : " + contar[2] + "\n";
                contatosF += "Email : " + contar[1] + "\n";
            }
            
            cont2++;
        }
        
        System.out.println(contatosF);
    }
}
